(function(c) {
	var b, e, a = [], d = window;
	c.fn.tinymce = function(j) {
		var p = this, g, k, h, m, i, l = "", n = "";
		if (!p.length) {
			return p;
		}
		if (!j) {
			return tinyMCE.get(p[0].id);
		}
		p.css("visibility", "hidden");
		function o() {
			var r = [], q = 0;
			if (f) {
				f();
				f = null;
			}
			p.each(function(t, u) {
				var s, w = u.id, v = j.oninit;
				if (!w) {
					u.id = w = tinymce.DOM.uniqueId();
				}
				s = new tinymce.Editor(w, j);
				r.push(s);
				s.onInit.add(function() {
					var x, y = v;
					p.css("visibility", "");
					if (v) {
						if (++q == r.length) {
							if (tinymce.is(y, "string")) {
								x = (y.indexOf(".") === -1) ? null : tinymce
										.resolve(y.replace(/\.\w+$/, ""));
								y = tinymce.resolve(y);
							}
							y.apply(x || tinymce, r);
						}
					}
				});
			});
			c.each(r, function(t, s) {
				s.render();
			});
		}
		if (!d.tinymce && !e && (g = j.script_url)) {
			e = 1;
			h = g.substring(0, g.lastIndexOf("/"));
			if (/_(src|dev)\.js/g.test(g)) {
				n = "_src";
			}
			m = g.lastIndexOf("?");
			if (m != -1) {
				l = g.substring(m + 1);
			}
			d.tinyMCEPreInit = d.tinyMCEPreInit || {
				base : h,
				suffix : n,
				query : l
			};
			if (g.indexOf("gzip") != -1) {
				i = j.language || "en";
				g = g + (/\?/.test(g) ? "&" : "?")
						+ "js=true&core=true&suffix=" + escape(n) + "&themes="
						+ escape(j.theme) + "&plugins=" + escape(j.plugins)
						+ "&languages=" + i;
				if (!d.tinyMCE_GZ) {
					tinyMCE_GZ = {
						start : function() {
							tinymce.suffix = n;
							function q(r) {
								tinymce.ScriptLoader.markDone(tinyMCE.baseURI
										.toAbsolute(r));
							}
							q("langs/" + i + ".js");
							q("themes/" + j.theme + "/editor_template" + n
									+ ".js");
							q("themes/" + j.theme + "/langs/" + i + ".js");
							c.each(j.plugins.split(","), function(s, r) {
								if (r) {
									q("plugins/" + r + "/editor_plugin" + n
											+ ".js");
									q("plugins/" + r + "/langs/" + i + ".js");
								}
							});
						},
						end : function() {
						}
					};
				}
			}
			c.ajax({
				type : "GET",
				url : g,
				dataType : "script",
				cache : true,
				success : function() {
					tinymce.dom.Event.domLoaded = 1;
					e = 2;
					if (j.script_loaded) {
						j.script_loaded();
					}
					o();
					c.each(a, function(q, r) {
						r();
					});
				}
			});
		} else {
			if (e === 1) {
				a.push(o);
			} else {
				o();
			}
		}
		return p;
	};
	c.extend(c.expr[":"], {
		tinymce : function(g) {
			return !!(g.id && "tinyMCE" in window && tinyMCE.get(g.id));
		}
	});
	function f() {
		function i(l) {
			if (l === "remove") {
				this.each(function(n, o) {
					var m = h(o);
					if (m) {
						m.remove();
					}
				});
			}
			this.find("span.mceEditor,div.mceEditor").each(function(n, o) {
				var m = tinyMCE.get(o.id.replace(/_parent$/, ""));
				if (m) {
					m.remove();
				}
			});
		}
		function k(n) {
			var m = this, l;
			if (n !== b) {
				i.call(m);
				m.each(function(p, q) {
					var o;
					if (o = tinyMCE.get(q.id)) {
						o.setContent(n);
					}
				});
			} else {
				if (m.length > 0) {
					if (l = tinyMCE.get(m[0].id)) {
						return l.getContent();
					}
				}
			}
		}
		function h(m) {
			var l = null;
			(m) && (m.id) && (d.tinymce) && (l = tinyMCE.get(m.id));
			return l;
		}
		function g(l) {
			return !!((l) && (l.length) && (d.tinymce) && (l.is(":tinymce")));
		}
		var j = {};
		c.each([ "text", "html", "val" ], function(n, l) {
			var o = j[l] = c.fn[l], m = (l === "text");
			c.fn[l] = function(s) {
				var p = this;
				if (!g(p)) {
					return o.apply(p, arguments);
				}
				if (s !== b) {
					k.call(p.filter(":tinymce"), s);
					o.apply(p.not(":tinymce"), arguments);
					return p;
				} else {
					var r = "";
					var q = arguments;
					(m ? p : p.eq(0)).each(function(u, v) {
						var t = h(v);
						r += t ? (m ? t.getContent().replace(
								/<(?:"[^"]*"|'[^']*'|[^'">])*>/g, "") : t
								.getContent({
									save : true
								})) : o.apply(c(v), q);
					});
					return r;
				}
			};
		});
		c.each([ "append", "prepend" ], function(n, m) {
			var o = j[m] = c.fn[m], l = (m === "prepend");
			c.fn[m] = function(q) {
				var p = this;
				if (!g(p)) {
					return o.apply(p, arguments);
				}
				if (q !== b) {
					p.filter(":tinymce").each(
							function(s, t) {
								var r = h(t);
								r
										&& r.setContent(l ? q + r.getContent()
												: r.getContent() + q);
							});
					o.apply(p.not(":tinymce"), arguments);
					return p;
				}
			};
		});
		c.each([ "remove", "replaceWith", "replaceAll", "empty" ], function(m,
				l) {
			var n = j[l] = c.fn[l];
			c.fn[l] = function() {
				i.call(this, l);
				return n.apply(this, arguments);
			};
		});
		j.attr = c.fn.attr;
		c.fn.attr = function(o, q) {
			var m = this, n = arguments;
			if ((!o) || (o !== "value") || (!g(m))) {
				if (q !== b) {
					return j.attr.apply(m, n);
				} else {
					return j.attr.apply(m, n);
				}
			}
			if (q !== b) {
				k.call(m.filter(":tinymce"), q);
				j.attr.apply(m.not(":tinymce"), n);
				return m;
			} else {
				var p = m[0], l = h(p);
				return l ? l.getContent({
					save : true
				}) : j.attr.apply(c(p), n);
			}
		};
	}
})(jQuery);